//
//  XYChatViewController.h
//  十年少
//
//  Created by 尧的mac on 15/11/28.
//  Copyright © 2015年 xxy.icom. All rights reserved.
//

#import "WLMessagesFrame.h"

// 正文的字体
#define TextFont [UIFont systemFontOfSize:15]

// 正文的内边距
#define TextPadding 20

@implementation WLMessagesFrame
//重写模型的setter方法，给每个模型数据设置frame
-(void)setMessages:(WLMessages *)messages
{
    _messages = messages;
    // 间距
    CGFloat padding = 10;
    // 屏幕的宽度
    CGFloat screenW = [UIScreen mainScreen].bounds.size.width;
    
    
    // 2.头像
    CGFloat iconY = 0;
    CGFloat iconW = 40;
    CGFloat iconH = 40;
    CGFloat iconX;
    if (messages.type == WLMessagesTypeOther) {// 别人发的
        iconX = padding;
    } else { // 自己的发的
        iconX = screenW - padding - iconW;
    }
    _iconFrame = CGRectMake(iconX, iconY, iconW, iconH);
    
    // 3.正文
    CGFloat textY = iconY;
    // 文字的尺寸(一条消息内容的最大宽度不能超过150，高度无限制)
    //最大尺寸
    CGSize textMaxSize = CGSizeMake(200, MAXFLOAT);
    //聊天内容尺寸
    CGSize textSize = [self sizeWithText:messages.text font:TextFont maxSize:textMaxSize];
    
    //聊天内容按钮真实尺寸
    CGSize textBtnSize = CGSizeMake(textSize.width + TextPadding * 2, textSize.height + TextPadding * 2);
    CGFloat textX;
    if (messages.type == WLMessagesTypeOther) {// 别人发的
        textX = CGRectGetMaxX(_iconFrame) + padding;
    } else {// 自己的发的
        textX = iconX - padding - textBtnSize.width;
    }
    //    _textFrame = CGRectMake(textX, textY, textSize.width, textSize.height);
    //另一种写法
//    _textFrame = (CGRect){{textX,textY},textMaxSize};
    _textFrame = (CGRect){{textX, textY}, textBtnSize};
    
    // 4.cell的高度
    CGFloat textMaxY = CGRectGetMaxY(_textFrame);
    CGFloat iconMaxY = CGRectGetMaxY(_iconFrame);
    //因为不知道是发的消息多少，所以取出内容和图像的最大y值
    _cellHeight = MAX(textMaxY, iconMaxY) + padding;
    
    
}
//对于自定义的cell中内容的大小计算的方法
/**
 *  计算文字尺寸(宽和高)
 *
 *  @param text    需要计算尺寸的文字
 *  @param font    文字的字体
 *  @param maxSize 文字的最大尺寸
 */
- (CGSize)sizeWithText:(NSString *)text font:(UIFont *)font maxSize:(CGSize)maxSize
{
    NSDictionary *attrs = @{NSFontAttributeName : font};
    return [text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size;
}

@end
